﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CamadasDados.Auditoria;

namespace CamadasDados.Orcamento
{
    public class csOrcamentoCliente
    {
        DB_WORCAMENTO dbWorcamento = new DB_WORCAMENTO();

        Auditoria.csAuditoria metAudit = new csAuditoria();

        private void FecharConexao(object banco)
        {
            ((DB_WORCAMENTO)banco).Connection.Close();
        }

        private void InicializarConexao(object banco)
        {
            ((DB_WORCAMENTO)banco).Connection.Open();
        }

        public TB_PEDIDO IncluirPedido(TB_PEDIDO objPedido)
        {
            try
            {
                InicializarConexao(dbWorcamento);
                objPedido.DT_INCLUSAO = DateTime.Now;
                dbWorcamento.AddToTB_PEDIDO(objPedido);
                dbWorcamento.SaveChanges();
            }
            catch (Exception e)
            {
                metAudit.IncluirLogErro(e.Message, "csOrcamentoCliente.cs", "IncluirPedido");
            }
            finally
            {
                FecharConexao(dbWorcamento);
            }
            return objPedido;
        }

        public List<TB_PEDIDO> ListaPedidoAbertosCliente(int intCodCliente)
        {
            var listPedido = new List<TB_PEDIDO>();
            try
            {
                InicializarConexao(dbWorcamento);

                listPedido = dbWorcamento.TB_PEDIDO.Where(q => q.CO_CLIENTE == intCodCliente && q.CO_STATUS_PEDIDO == 1).ToList();
            }
            catch (Exception e)
            {
                metAudit.IncluirLogErro(e.Message, "csOrcamentoCliente.cs", "ListaPedidoClienteAtivo");
            }
            finally
            {
                FecharConexao(dbWorcamento);
            }
            return listPedido;
        }

        public List<TB_PEDIDO> ListaPedidoFechadosCliente(int intCodCliente)
        {
            var listPedido = new List<TB_PEDIDO>();
            try
            {
                InicializarConexao(dbWorcamento);

                listPedido = dbWorcamento.TB_PEDIDO.Where(q => q.CO_CLIENTE == intCodCliente && q.CO_STATUS_PEDIDO == 2).ToList();
            }
            catch (Exception e)
            {
                metAudit.IncluirLogErro(e.Message, "csOrcamentoCliente.cs", "ListaPedidoClienteAtivo");
            }
            finally
            {
                FecharConexao(dbWorcamento);
            }
            return listPedido;
        }

        public List<TB_PEDIDO> ListaPedidoSuspensosCliente(int intCodCliente)
        {
            var listPedido = new List<TB_PEDIDO>();
            try
            {
                InicializarConexao(dbWorcamento);

                listPedido = dbWorcamento.TB_PEDIDO.Where(q => q.CO_CLIENTE == intCodCliente && q.CO_STATUS_PEDIDO == 3).ToList();
            }
            catch (Exception e)
            {
                metAudit.IncluirLogErro(e.Message, "csOrcamentoCliente.cs", "ListaPedidoClienteAtivo");
            }
            finally
            {
                FecharConexao(dbWorcamento);
            }
            return listPedido;
        }

        public void TrocarStatusPedido(int intCodPedido, int intCodStatus)
        {
            try
            {
                InicializarConexao(dbWorcamento);
                var objPedido = dbWorcamento.TB_PEDIDO.Where(q => q.CO_PEDIDO == intCodPedido).FirstOrDefault();
                objPedido.CO_STATUS_PEDIDO = intCodStatus;
                dbWorcamento.SaveChanges();
            }
            catch (Exception e)
            {
                metAudit.IncluirLogErro(e.Message, "csOrcamentoCliente.cs", "TrocarStatusPedido");
            }
            finally
            {
                FecharConexao(dbWorcamento);
            }
        }

    }
}
